package binarysearch;

public class FindPeakElement162 {
    // 注意只需要找到任意一个峰值
    public int findPeakElement(int[] nums) {
        int left = 0;
        int right = nums.length - 1;

        // 注意循环退出条件
        while (left < right) {
            int mid = (left + right) / 2;
            // mid为左半段最后一个元素, mid+1为右半段第一个元素
            // 注意带上等号, 往右爬坡. 保证右半段第一个元素大于等于左半段最后一个元素
            if (nums[mid] <= nums[mid+1]) {
                left = mid + 1;
            } else {
                // 保证左半段最后一个元素大于右半段第一个元素
                right = mid;
            }
        }
        // left == right
        return left;
    }
}
